#ifndef SIMPLE_IMAGE_H_
#define SIMPLE_IMAGE_H_

#include "ReadableImage.h"
#include "WritableImage.h"

class SimpleImage : public ReadableImage, public WritableImage {
  public:
    virtual ~SimpleImage() {}

    // Creates an empty image of given dimension with background color.
    virtual int create(int width, int height, const Color& background) = 0;
    // Loads an image from specified file.
    virtual int load(const std::string& filename) = 0;
    // Loads an image from raw data.
    virtual int loadFromStream(std::istream& stream) = 0;

    // Saves an image. Format is determined by extension.
    virtual int save(const std::string& filename) const = 0;

};

#endif
